#ifndef __MCU_HARDWARE_GPIO_H
#define __MCU_HARDWARE_GPIO_H

#include "headfile.h"

class GPIO
{
    Pin_enum gpio_pin;

public:
    GPIO(){};
    GPIO(Pin_enum pin) { gpio_pin = pin; };
    GPIO(Pin_enum pin, GPIO_mode mode)
    {
        gpio_init(pin, mode);
        gpio_pin = pin;
    };

    void mode(GPIO_mode mode);
    void write(uint8_t data);
    void toggle();
    uint8_t read();
    void attachInterrupt(void (*callback)(void), EXIT_mode mode);

    uint16_t adc();
};

#endif
